package cn.wolfcode.trip.app.util;

import cn.wolfcode.trip.base.domain.User;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpSession;
import java.util.List;

public class UserContext {
    //因为同一在作用域中的名,把用户在作用域中的名做成一个常量
    public static final String USER_IN_SESSION = "USER_IN_SESSION";


    public static HttpSession getSession() {
        //先调用RequestContextHolder这个类的静态方法,getRequestAttribute,获取到的对象强转为
        //ServletRequestAttributes对象,获得这个对象
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        //获得attribute对象后,调用获取请求作用域方法,再调用获取Session作用域的方法
        HttpSession session = attributes.getRequest().getSession();
        return session;
    }

    //定义一个静态方法,获取到这个session,给上面方法包装一下
    //并且把当前用户给共享到session作用域中
    public static void setCurrentUser(User user) {
        getSession().setAttribute(USER_IN_SESSION, user);
    }

    //获取在作用域中的当前用户
    public static User getCurrentUser() {
        return (User) getSession().getAttribute(USER_IN_SESSION);
    }

}
